package com.hb.trans.mvp.presenter

import androidx.lifecycle.Lifecycle
import androidx.lifecycle.OnLifecycleEvent
import com.basiclib.base.BasePresenter
import com.basiclib.lifecycle.RxLifecycleUtils
import com.basiclib.network.RetryWithDelay
import com.basiclib.network.RxErrorHandler
import com.hb.trans.bean.Base
import com.hb.trans.bean.ServeList
import com.hb.trans.global.ErrorHandleSubscriber
import com.hb.trans.mvp.contract.ServeContract
import com.hb.trans.mvp.model.ServeModel
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers
import javax.inject.Inject

class ServePresenter @Inject constructor(model: ServeModel, var errorHandler: RxErrorHandler) :
    BasePresenter<ServeContract.View, ServeContract.Model>(model) {

    @OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
    fun getServes() {
        mModel.getServes()
            .subscribeOn(Schedulers.io())
            .retryWhen(RetryWithDelay())
            .observeOn(AndroidSchedulers.mainThread())
            .compose(RxLifecycleUtils.bindToLifecycle(mRootView!!))
            .subscribe(object : ErrorHandleSubscriber<Base<ServeList>>(errorHandler) {
                override fun next(r: Base<ServeList>) {
                    if (r.code == 1) {
                        mRootView?.setupData(r.data)
                    } else {
                        mRootView?.showShortToast(r.info ?: "")
                    }
                }
            })
    }
}